www.gusucode.com > VC++ RingSDK界面库 > VC++ RingSDK界面库/code/example/controls/buttons/buttons.cpp
/********************************************************************** // // // ########## ###### ######### # ###### # // ############# ########### ######### ######### ### // ######## # ### ## ############# ## ## ##### # #### // #### ## ## ### ### ### # # ##### ##### // # ### # # ## ## ## ## ### // ## ###### ## ## #### #### # # ## // ######### ### ## ### ####### ###### ## ## ### // ###### ## ###### ## ## #### # ## #### // ####### ## ###### ## ### ## ## ### ###### // ######### ## ###### ## ###### ### ## ### # ##### // ## ###### ####### ### #### ## ## ####### ######## ## #### // ## #### ### # ### ### ## ########## ###### ## #### // ## ## ## ######### #### # ## // # ### // ## // ### // ## // // // 临风程序界面类库演示 //作者:临风 // //版本:1.0 // //声明:本类库可以自由使用而不须对作者作出任何回报,但作者希望能得到 // 你的鼓励和支持。你可以对类库源码作出修改和改进,但希望你能在 // 修改的同时给作者一份同样的副本。 // 本类库不得用于任何商业用途,如确实需要,请与作者联系。 // //e-mail:ringphone@sina.com // //本文件说明:演示按钮类的使用。 // **********************************************************************/ #include "ringmain.h" #include "resource.h" BEGIN_SETUPMAINWINDOW(IS_DIALOG) //主窗口是对话框 BEGIN_DEF_VAR(NO_INIT) RingButton m_btIcon,m_btBmp,m_btCust,m_btDef; RingButton* m_lpbtn; END_DEF_VAR BEGIN_DEFMSG DEFMSG(WM_INITDIALOG) DEFCMD(OnBtBmpClick) DEFCMD(OnAlignClick) DEFCMD(OnIconPosClick) DEFCMD(OnExit) END_DEFMAINMSG END_SETUPMAINWINDOW BEGIN_REGMAINMSG REGMSG(WM_INITDIALOG) REGCMD(IDC_BTNBMP,OnBtBmpClick) REGCMD(IDC_BTNCUST,OnAlignClick) REGCMD(IDC_BTNOWNIMG,OnIconPosClick) REGCMD(IDOK,OnExit) REGCMD(IDCANCEL,OnExit) END_REGMSG int RingMain() { APP_CREATEDIALOG(MAKEINTRESOURCE(IDD_MAIN)); return RingApp.Run(); } RINGMAINMSG(WM_INITDIALOG) { //直接生成的对象用AssignItem关联 AssignItem(m_btDef,IDC_STANDARD); AssignItem(m_btIcon,IDC_BTNICON); AssignItem(m_btBmp,IDC_BTNBMP); AssignItem(m_btCust,IDC_BTNCUST); //关联对象指针用GetItem m_lpbtn = GetItem(itemof(RingButton),IDC_BTNOWNIMG); //或m_lpbtn = GetItem(m_lpbtn,IDC_BTNOWNIMG); //设置图标 m_btIcon.SetIcon(IDI_ICON1,128,128); //设置类型为无焦点矩形框 m_btIcon.SetExStyle(RINGBTN_EX_NOFOCUSRECT); //设置图象 m_btBmp.SetBitmap(IDB_BEER); m_btCust.AddIcon(IDI_ICON1,ATBTN_LEFT,16,16); m_btCust.SetBkColor(0x007f7fff); m_btCust.SetTextColor(0x004f4eFF); m_lpbtn->AddBitmap(IDB_TIME,ATBTN_LEFT); m_lpbtn->SetExStyle(RINGBTN_EX_FLAT); m_btDef.SetBkColor(0x00FF0000); m_btDef.SetTextColor(0x000000FF); return FALSE; } RINGMAINCMD(OnAlignClick) { //event为本函数的参数,为WM_COMMAND消息里的HIWORD(wParam),RINGCMD宏隐藏了该参数. //设置过背景和字体颜色,BUTTON为OWNERDRAW类型,会发送BN_PUSHED等消息,因此需判断 //是否点击了按钮产生的消息。 if(event == BN_CLICKED) { if(strcmp(m_btCust.GetText(),"文字左对齐") == 0) { m_btCust.ReplaceStyle(BS_LEFT,BS_CENTER); m_btCust.SetValue("文字居中"); } else if(strcmp(m_btCust.GetText(),"文字居中") == 0) { m_btCust.ReplaceStyle(BS_CENTER,BS_RIGHT); m_btCust.SetValue("文字右对齐"); } else { m_btCust.ReplaceStyle(BS_RIGHT,BS_LEFT); m_btCust.SetValue("文字左对齐"); } } } RINGMAINCMD(OnIconPosClick) { if(m_lpbtn && event == BN_CLICKED) { if(strcmp(m_lpbtn->GetText(),"图象在左") == 0) { m_lpbtn->AddBitmap(IDB_TIME,ATBTN_TOP); m_lpbtn->SetValue("图象在上"); } else if(strcmp(m_lpbtn->GetText(),"图象在上") == 0) { m_lpbtn->AddBitmap(IDB_TIME,ATBTN_RIGHT); m_lpbtn->SetValue("图象在右"); } else if(strcmp(m_lpbtn->GetText(),"图象在右") == 0) { m_lpbtn->AddBitmap(IDB_TIME,ATBTN_BOTTOM); m_lpbtn->SetValue("图象在下"); } else if(strcmp(m_lpbtn->GetText(),"图象在下") == 0) { m_lpbtn->AddBitmap(IDB_TIME,ATBTN_LEFT); m_lpbtn->SetValue("图象在左"); } } } RINGMAINCMD(OnBtBmpClick) { if(MASK_MATCH(m_btBmp.GetStyle(),BS_BITMAP)) { m_btBmp.SetIcon(IDI_ICON1,16,16); m_btBmp.SetPos(0,0,32,32,NULL,SWP_NOMOVE); } else { m_btBmp.SetBitmap(IDB_BEER); m_btBmp.SetPos(0,0,42,128,NULL,SWP_NOMOVE); } } RINGMAINCMD(OnExit) { Close(0); }